
import libnum
import uuid
import gmpy2

flag = "flag{" + str(uuid.uuid4()) + "}"
m=libnum.s2n(flag)


x=2293
y=2999

p=libnum.generate_prime(256)
q=libnum.generate_prime(256)
n=p*q

h=pow(p+q,p,n)+pow(p-q,p,n)
c1=pow(m+q,p,q)
c2=pow(m+p,q,p)

#
# m1=m*(p-x)!%p
# for i in range(1,p-x+1):
#     m=(m*i)%n
#
#c1=c1*(p-x)!%p
# for i in range(1,p-x+1):
#     c1=(c1*i)%p

# m1=m*(z-x)!%z


for i in range(p-x+1,p-1):
    c1=c1*libnum.invmod(i,p)%p

#c2=c2*(q-x)!%q
# for i in range(1,q-y+1):
#     c2=(c2*i)%q
for i in range(q-y+1,q-1):
    c2=c2*libnum.invmod(i,q)%q

print("h=",h)
print("n=",n)
print("c1=",c1)
print("c2=",c2)
h= 16904376071225597675197046556944410427582609796207492373518528626957886374105299061973369114441826844127206588131953364491440310404702816318850400638779060
n= 8928709480734490378901429516141532345710427175648697814723019235038750146335545167143398406879489617199302770305131758872937018859200835014885553932404971
c1= 40111430243445517546476026768678676282033271794242287126004764317624932615254
c2= 68736583928047139307802590417766680081908585504953855176387428170956251384990